home *** CD-ROM | disk | FTP | other *** search
/ Sprite 1984 - 1993 / Sprite 1984 - 1993.iso / src / lib / c / unixSyscall / RCS / semctl.man,v < prev    next >
Text File  |  1990-05-02  |  5KB  |  335 lines

  1. head     1.2;
  2. branch   ;
  3. access   ;
  4. symbols  ;
  5. locks    ; strict;
  6. comment  @@;
  7.  
  8.  
  9. 1.2
  10. date     90.05.01.22.57.20;  author shirriff;  state Exp;
  11. branches ;
  12. next     1.1;
  13.  
  14. 1.1
  15. date     90.03.15.12.32.04;  author shirriff;  state Exp;
  16. branches ;
  17. next     ;
  18.  
  19.  
  20. desc
  21. @Original Unix man page.
  22. @
  23.  
  24.  
  25. 1.2
  26. log
  27. @Made changes to the man page.
  28. @
  29. text
  30. @.\" @@(#)semctl.2 1.18 88/03/07 SMI; from S5R3
  31. .TH SEMCTL 2 "21 November 1987"
  32. .SH NAME
  33. semctl \- semaphore control operations
  34. .SH SYNOPSIS
  35. .nf
  36. .ft B
  37. #include <sys/types.h>
  38. #include <sys/ipc.h>
  39. #include <sys/sem.h>
  40. .LP
  41. .ft B
  42. int semctl (semid, semnum, cmd, arg)
  43. int semid, cmd;
  44. int semnum;
  45. union semun {
  46.     val;
  47.     struct semid_ds \(**buf;
  48.     ushort \(**array;
  49. } arg;
  50. .ft R
  51. .fi
  52. .SH DESCRIPTION
  53. .IX  semctl  "" "\fLsemctl\fR \(em semaphore controls"
  54. .IX  semaphore "control \(em \fLsemctl\fR"
  55. .B semctl(\|)
  56. provides a variety of semaphore control operations as specified by
  57. .IR cmd .
  58. .LP
  59. The following
  60. .IR cmd s
  61. are executed with respect to the semaphore specified by
  62. .IR semid " and " semnum:
  63. .RS
  64. .TP 20
  65. .B GETVAL
  66. Return the value of
  67. .I semval
  68. (see
  69. .BR intro (2)).
  70. .B {\s-1READ\s0}
  71. .TP
  72. .B SETVAL
  73. Set the value of
  74. .I semval
  75. to
  76. .IR arg.val .
  77. .B {\s-1ALTER\s0}
  78. .TP
  79. .B GETPID
  80. Return the value of
  81. .IR sempid .
  82. .B {\s-1READ\s0}
  83. .TP
  84. .B GETNCNT
  85. Return the value of
  86. .IR semncnt .
  87. .B {\s-1READ\s0}
  88. .TP
  89. .B GETZCNT
  90. Return the value of
  91. .IR semzcnt .
  92. .B {\s-1READ\s0}
  93. .RE
  94. .LP
  95. The following
  96. .IR cmd s
  97. return and set, respectively, every
  98. .I semval
  99. in the set of semaphores.
  100. .RS
  101. .TP
  102. .B GETKEYS
  103. Place the partial contents of all semaphore
  104. entries into the array pointed to by
  105. .I arg.buf .
  106. .TP
  107. .B GETALL
  108. Place
  109. .I semvals
  110. into the array pointed to by
  111. .IR arg.array .
  112. .B {\s-1READ\s0}
  113. .TP
  114. .B SETALL
  115. Set
  116. .I semvals
  117. according to the array pointed to by
  118. .IR arg.array .
  119. .B {\s-1ALTER\s0}
  120. .RE
  121. .LP
  122. The following
  123. .IR cmd s
  124. are also available:
  125. .RS
  126. .TP 20
  127. .B IPC_STAT
  128. Place the current value of each member of the data structure associated with
  129. .I semid
  130. into the structure pointed to by
  131. .IR arg.buf .
  132. The contents of this structure are defined in
  133. .BR intro (2).
  134. .B {\s-1READ\s0}
  135. .TP
  136. .B IPC_SET
  137. Set the value of the following members of the data structure associated with
  138. .I semid
  139. to the corresponding value found in the structure pointed to by
  140. .IR arg.buf :
  141. .IP
  142. .nf
  143. .B sem_perm.uid
  144. .B sem_perm.gid
  145. .B "sem_perm.mode /\(** only low 9 bits \(**/"
  146. .fi
  147. .IP
  148. This
  149. .I cmd
  150. can only be executed by a process that has an effective user
  151. .SM ID
  152. equal to either that of super-user, or to the value of
  153. .B sem_perm.cuid
  154. or
  155. .B sem_perm.uid
  156. in the data structure associated with
  157. .IR semid .
  158. .br
  159. .ne 5
  160. .TP 20
  161. .B IPC_RMID
  162. Remove the semaphore identifier specified by
  163. .I semid
  164. from the system and destroy the set of semaphores and data structure
  165. associated with it.
  166. This cmd can only be executed by a process that has an effective user
  167. .SM ID
  168. equal to either that of super-user, or to the value of
  169. .B sem_perm.cuid
  170. or
  171. .B sem_perm.uid
  172. in the data structure associated with
  173. .IR semid .
  174. .RE
  175. .SH "RETURN VALUE"
  176. .LP
  177. Upon successful completion,
  178. the value returned depends on
  179. .I cmd
  180. as follows:
  181. .PD 0
  182. .RS
  183. .TP 20
  184. .B GETVAL
  185. The value of
  186. .IR semval .
  187. .TP
  188. .B GETPID
  189. The value of
  190. .IR sempid .
  191. .TP
  192. .B GETNCNT
  193. The value of
  194. .IR semncnt .
  195. .TP
  196. .B GETZCNT
  197. The value of
  198. .IR semzcnt .
  199. .TP
  200. All others
  201. A value of 0.
  202. .RE
  203. .LP
  204. .PD
  205. Otherwise, a value of \-1 is returned and
  206. .B errno
  207. is set to indicate the error.
  208. .SH ERRORS
  209. .B semctl(\|)
  210. will fail if one or more of the following are true:
  211. .TP 20
  212. .SM EINVAL
  213. .I semid
  214. is not a valid semaphore identifier.
  215. .TP
  216. .SM EINVAL
  217. .I semnum
  218. is less than zero or greater than
  219. .BR sem_nsems .
  220. .TP
  221. .SM EINVAL
  222. .I cmd
  223. is not a valid command.
  224. .TP
  225. .SM EACCES
  226. Operation permission is denied to the calling process (see
  227. .BR intro (2)).
  228. .TP
  229. .SM ERANGE
  230. .I cmd
  231. is
  232. .B SETVAL
  233. or
  234. .B SETALL
  235. and the value to which
  236. .I semval
  237. is to be set is greater than the system imposed maximum.
  238. .TP
  239. .SM EPERM
  240. .I cmd
  241. is equal to
  242. .B IPC_RMID
  243. or
  244. .B IPC_SET
  245. and the effective user
  246. .SM ID
  247. of the calling process is not equal to that of super-user, or
  248. to the value of
  249. .B sem_perm.cuid
  250. or
  251. .B sem_perm.uid
  252. in the data structure associated with
  253. .IR semid .
  254. .TP
  255. .SM EFAULT
  256. .I arg.buf
  257. points to an illegal address.
  258. .SH SEE ALSO
  259. .BR intro (2),
  260. .BR semget (2),
  261. .BR semop (2).
  262. @
  263.  
  264.  
  265. 1.1
  266. log
  267. @Initial revision
  268. @
  269. text
  270. @d36 1
  271. a36 1
  272. .SB GETVAL
  273. d43 1
  274. a43 1
  275. .SB SETVAL
  276. a48 4
  277. When this cmd is successfully executed, the
  278. .I semadj
  279. value corresponding to the
  280. specified semaphore in all processes is cleared.
  281. d50 1
  282. a50 1
  283. .SB GETPID
  284. d55 1
  285. a55 1
  286. .SB GETNCNT
  287. d60 1
  288. a60 1
  289. .SB GETZCNT
  290. d73 6
  291. a78 1
  292. .SB GETALL
  293. d85 1
  294. a85 1
  295. .SB SETALL
  296. a90 4
  297. When this cmd is successfully executed the
  298. .I semadj
  299. values corresponding to each
  300. specified semaphore in all processes are cleared.
  301. d98 1
  302. a98 1
  303. .SB IPC_STAT
  304. d107 1
  305. a107 1
  306. .SB IPC_SET
  307. d132 1
  308. a132 1
  309. .SB IPC_RMID
  310. d155 1
  311. a155 1
  312. .SB GETVAL
  313. d159 1
  314. a159 1
  315. .SB GETPID
  316. d163 1
  317. a163 1
  318. .SB GETNCNT
  319. d167 1
  320. a167 1
  321. .SB GETZCNT
  322. d203 1
  323. a203 1
  324. .SB SETVAL
  325. d205 1
  326. a205 1
  327. .SB SETALL
  328. d213 1
  329. a213 1
  330. .SB IPC_RMID
  331. d215 1
  332. a215 1
  333. .SB IPC_SET
  334. @
  335.